import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * \* Created with IntelliJ IDEA.
 * \* User: Administrator
 * \* Date: 2021/11/5
 * \* Time: 21:16
 * \* To change this template use File | Settings | File Templates.
 * \* Description:
 * \
 */
public class MyArrayList {
    public int[]elem;//数组
    public int usedSize;//有效的数据个数

    public MyArrayList(){
        this.elem=new int[10];
        this.usedSize=0;
    }


 // 打印顺序表
          public void display() {
             for (int i=0;i<this.usedSize;i++){
                 System.out.print(this.elem[i]+" ");
             }
              System.out.println();
          }

          public boolean isFull(){
            return this.usedSize==this.elem.length;//如果满了就返回true
          }
// 在 pos 位置新增元素
          public void add(int pos, int data) {
            if(pos<0||pos>usedSize){
                System.out.println("pos位置不合法");
                return;
            }
            if(isFull()){
                this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
            }
            for(int i=usedSize-1;i>=pos;i--){//useSize-1表示数组多少，pos表示指向的位置
                this.elem[i+1] = this.elem[i];//i下标的值给i+1
            }
            this.elem[pos]=data;//存放插入的数据data
            this.usedSize++;
          }
 // 判定是否包含某个元素
          public boolean contains(int toFind) {
            for (int i=0;i<this.usedSize;i++){
                if(this.elem[i]==toFind){
                    return true;
                }
              }
            return false;
          }
 // 查找某个元素对应的位置,找不到返回-1
          public int search(int toFind){
              for (int i=0;i<this.usedSize;i++){
                  if(this.elem[i]==toFind){
                      return i;
                  }
              }
              return -1;
          }
 // 获取 pos 位置的元素
          public int getPos(int pos) {
            if(pos<0||pos>=this.usedSize){
                System.out.println("pos位置不合法");
                return -1;
            }
            if(isEmply()){
                System.out.println("顺序表为空");
                return -1;
            }
            return this.elem[pos];
          }

          public boolean isEmply(){
                return this.usedSize==0;
          }
 // 给 pos 位置的元素设为 value
          public void setPos(int pos, int value) {
            if(pos<0||pos>=usedSize){
                System.out.println("pos位置不合法");
                return;
            }
            if (isEmply()){
                System.out.println("顺序表为空");
                return;
            }
              this.elem[pos] = value;
          }
 //删除第一次出现的关键字key
          public void remove(int toRemove) {
            if (isEmply()){
                System.out.println("顺序表为空");
                return;
            }
            int index=search(toRemove);//index找不到自动返回-1
            if(index==-1){
                System.out.println("没有你要找的数据");
                return;
            }
            for (int i=index;i<usedSize-1;i++){
                this.elem[i]=this.elem[i+1];
            }
            this.usedSize--;
          }
  // 获取顺序表长度
          public int size() {
            return this.usedSize;
          }
 // 清空顺序表
          public void clear() {
        this.usedSize=0;
          }

}
